#ifndef I_COMPONENT_H
#define I_COMPONENT_H

#include <string>
#include "..\Generic\GameTime.h"

class GameObject;
class IComponent
{
public:
	
	IComponent() : m_owner(nullptr) {};
	IComponent(GameObject* p_owner) : m_owner(p_owner) {};

	virtual ~IComponent() {};

	virtual void init() = 0;
	virtual void update(const GameTime&) = 0;


	virtual const std::string getType() = 0;
	virtual const std::string getFamilyType() = 0;

	void setOwner(GameObject* p_owner) { m_owner = p_owner; };
	GameObject* getOwner() { return m_owner; };
private:
	GameObject* m_owner;
};

#endif //I_COMPONENT_H